package CommonTools;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;


/**
 * Класс для работы с настройками
 *
 * @author Aleksey Salnikov
 */
public class Settings {

    private static File f = new File("settings.conf");
    private static FileReader fr;
    private static HashMap set;

    static
    {
        try
        {
            Settings.set = new HashMap();
            Settings.fr = new FileReader(Settings.f);
            BufferedReader br = new BufferedReader(Settings.fr);

            //Читаем содержимое файла в хэш-таблицу
            String st;
            while ((st = br.readLine()) != null)
            {
                    int dv = st.indexOf(":");
                    Settings.set.put(st.substring(0, dv), st.substring(dv + 2));
            }

            br.close();
            Settings.fr.close();
        }
        catch (FileNotFoundException e)
        {
            DesignTools.showMessage("Ошибка конфигурации", "Не найден файл конфигурации", false);
        }
        catch (IOException e){}
    }

    //Функция возвращает значение параметра
    public static String getParametrValue(String parametr)
    {
        return (String) Settings.set.get(parametr);
    }

    //Функция изменияет значение параметра
    public static void changeParametr(String p, String value)
    {
        Settings.set.remove(p);
        Settings.set.put(p, value);
    }

    //Функция сохраняет текущую конфигурацию
    public static void saveConfiguration()
    {
        try
        {
            FileWriter fw = new FileWriter(Settings.f);

            String write = new String();
            Set keys = Settings.set.keySet();
            Iterator it = keys.iterator();
            String s;

            //Запись строки
            while (it.hasNext())
            {
                s = (String) it.next();
                write += s + ": " + Settings.getParametrValue(s) + "\n";
            }

            fw.write(write);
            fw.close();
        }
        catch (IOException e)
        {
            DesignTools.showMessage("Ошибка конфигурации", "Не удается сохранить конфигурацию", false);
        }
    }

    public static String codeString(String code)
    {
        String result = "";
        for (int i = code.length() - 1; i >=0; i--)
            result += code.charAt(i);

        return result;
    }
}
